def convert_to_custom_base(decimal, base):
    # 将十进制数转换为自定义进制的字符串表示
    """将十进制数转换为自定义进制"""
    # 如果十进制数为0，直接返回字符串"0"
    if decimal == 0:
        return "0"

    # 初始化结果字符串
    result = ""
    # 当十进制数大于0时循环
    while decimal > 0:
        # 计算当前最低位的余数
        remainder = decimal % base
        # 余数小于10，则直接拼接数字
        if remainder < 10:
            result = str(remainder) + result
        # 余数大于等于10，用字母表示
        else:
            result = chr(ord("A") + remainder - 10) + result
        # 整除base，进入下一个高位
        decimal //= base

    # 返回最终的自定义进制字符串
    return result


# 示例1: 自定义进制转换函数
def convert_base(number, from_base, to_base):
    # 将数字从一个进制转换为另一个进制
    """将数字从一个进制转换为另一个进制"""
    # 先将输入的数字转换为字符串，再按照输入的原始进制转换为十进制整数
    decimal = int(str(number), from_base)
    # 如果目标进制是2，返回二进制字符串
    if to_base == 2:
        return bin(decimal)
    # 如果目标进制是8，返回八进制字符串
    elif to_base == 8:
        return oct(decimal)
    # 如果目标进制是16，返回十六进制字符串
    elif to_base == 16:
        return hex(decimal)
    else:
        # 如果是其他进制，使用自定义函数进行转换
        return convert_to_custom_base(decimal, to_base)


# 测试自定义进制转换
# 打印测试标题
print("自定义进制转换测试:")
# 定义一个二进制字符串作为测试数字
test_number = "1010"  # 二进制
# 输出二进制字符串转换为八进制的结果
print(f"二进制 '{test_number}' 转换为八进制: {convert_base(test_number, 2, 8)}")
# 输出二进制字符串转换为十六进制的结果
print(f"二进制 '{test_number}' 转换为十六进制: {convert_base(test_number, 2, 16)}")
# 输出二进制字符串转换为5进制的结果
print(
    f"二进制 '{test_number}' 转换为5进制: {convert_to_custom_base(int(test_number, 2), 5)}"
)
